﻿Obrigado por usares o SUPRA chess engine!

O Supra 30.0 é a maior atualização da história do Supra: multiprocessamento (até 8 núcleos), pesquisa de quiescência, pesquisa até 40 níveis de profundidade, mop-up, personalidades e um novo livro de aberturas romântico.

Nesta versão, o Supra tem 60 opções de configuração e 2 botões para limpar a memória, organizados por assunto. As opções marcadas com * influenciam a velocidade da pesquisa. As opções marcadas com ** foram implementadas no Supra 30.0 com a preciosa e imprescindível ajuda de Claude, inteligência artificial da Anthropic.


==================================================
SISTEMA
==================================================

· Threads** : número de núcleos do processador usados pelo Supra (de 1 a 8). Por omissão, o Supra usa 1 thread e funciona exatamente como um motor de um só processador. Para usar o multiprocessamento, escolhe o número de threads antes de começar o jogo (de preferência até ao número de núcleos do computador). O multiprocessamento rende mais em jogos de 10 minutos ou mais. (default: 1)

· Hash** : tamanho da tabela de hash em MB (de 1 a 4096). A tabela guarda os lances e valores das posições já analisadas e é partilhada por todos os threads. (default: 64)

· Hash moves** : ativa a tabela de hash. (default: on)

· CPU power level* : calibração da gestão do tempo pelo utilizador, em quatro níveis: EXTREME para computadores de máximo desempenho (+4 GHz); HIGH para computadores de topo (entre 2,5 e 4 GHz); MEDIUM para computadores normais (entre 1,5 e 2,5 GHz) e LOW para computadores mais lentos (-1,5 GHz). (default: MEDIUM)


==================================================
TEMPO
==================================================

· Deep* : parametriza o nível de profundidade da pesquisa. Para jogos de 1 minuto ou menos, recomendo Deep<=4. Com o controlo de tempo ativo, o Supra 30.0 pode aprofundar a pesquisa até 40 níveis (meios-lances). (default: 9)

· Time control* : ativa o controlo do tempo disponível para a pesquisa. (default: on)

· Time usage* : parametriza o tempo de pesquisa. (default: 3)


==================================================
LIVRO E MEMÓRIA
==================================================

· OwnBook** : ativa o livro de aberturas próprio do Supra. O Supra 30.0 traz um novo livro romântico, com 350 posições: todas as linhas do livro anterior e gambitos clássicos como o Gambito de Rei (com o Muzio), o Gambito Evans, o Fried Liver, o Contra-Ataque Traxler, o Ataque Marshall, o Gambito Schliemann, o Gambito Letão, o Gambito de Budapeste, o Contra-Gambito Albin, o Alien Gambit, o Martian Gambit e a Variante Portuguesa da Escandinava. Algumas posições têm várias continuações com pesos, e o Supra escolhe entre elas, por isso nem sempre joga a mesma abertura. (O nome antigo "Own book" continua a ser aceite.) (default: on)

· Book file** : ficheiro do livro de aberturas. Por omissão, o Supra usa o livro que traz dentro do executável. Se o ficheiro supra_livro.txt estiver na pasta do executável, o Supra usa esse ficheiro, que pode ser editado com qualquer editor de texto: cada linha tem os lances desde o início e as respostas do Supra, por exemplo "e2e4 e7e5 -> g1f3 65 | f2f4 35". (default: <internal>)

· Memory* : quando ativa, a memória do Supra guarda o valor de um total de 1.000.000 jogadas, para que o Supra não precise de reavaliar uma posição que já esteja na memória. (default: on)

· Clear memory (botão): a memória do Supra recicla-se automaticamente, por isso nunca precisa de ser limpa, a não ser que o utilizador queira rever o processo de pesquisa para uma posição já guardada.

· Deep memory* : além das 1.000.000 jogadas/posições de nível depth=1 guardadas, o Supra pode guardar também posições correspondentes a níveis depth<=5. Apesar de às vezes ser vantajoso em jogos rápidos, acho preferível não ativar esta memória em jogos com menos de 5 minutos. (default: on)

· Clear deep memory (botão): tal como a memória normal, a deep memory recicla-se automaticamente e só precisa de ser limpa para rever o processo de pesquisa de uma posição já guardada.


==================================================
PESQUISA
==================================================

· Lazy SMP** : modo de multiprocessamento. Todos os threads pesquisam a mesma posição, com profundidades desfasadas, partilhando a tabela de hash e os valores de alfa, e cada um aproveita o trabalho dos outros. Se for desligado, os threads dividem entre si os lances da raiz. (default: on)

· SMP time factor** : tempo extra dado ao Supra quando usa vários threads, em percentagem por thread adicional (0 a 100). Com 0, o Supra usa exatamente o mesmo tempo com 1 ou com 8 threads, e o ganho vem só de pensar melhor. Nos testes do autor, 0 foi o melhor valor. (default: 0)

· Best thread by depth** : no fim da pesquisa, o Supra escolhe o lance do thread que chegou à pesquisa válida mais profunda, e não sempre o do primeiro thread. Um ciclo incompleto conta como válido assim que o primeiro lance da raiz (o melhor do ciclo anterior, analisado sempre primeiro) termina; o lance que estava a ser analisado quando o tempo acabou é descartado. Em caso de empate na profundidade, ganha o thread que acabou mais lances da raiz. (Ideia do autor, implementada com a ajuda de Claude.) (default: on)

· Lazy depth spread** : forma de distribuir as profundidades iniciais pelos threads. "balanced": com 4 threads, dois começam ao nível do primeiro e dois um ciclo à frente; com 8 threads, três ao mesmo nível, quatro um ciclo à frente e um dois ciclos à frente. "classic": a distribuição habitual do Lazy SMP. (Ideia do autor, implementada com a ajuda de Claude.) (default: balanced)

· Shared alpha by depth** : os threads que estão na mesma profundidade partilham entre si os valores de alfa, e cada um corta mais cedo com o trabalho dos outros. Opção experimental: nos testes do autor, o Supra ficou mais equilibrado sem ela. (Ideia do autor, implementada com a ajuda de Claude.) (default: off)

· Lazy eval* ** : avaliação preguiçosa dos dois lados. Quando o material, só por si, já garante o corte ou já garante que a folha é irrelevante, a avaliação completa não é feita. Cerca de 6% mais rápido, com o mesmo resultado. (default: on)

· Eval cache* ** : memória de avaliações. Cerca de 17% das avaliações repetem uma posição já avaliada na mesma pesquisa (sobretudo por causa dos ciclos do IID); o resultado fica guardado numa pequena tabela e é reaproveitado. Dá exatamente a mesma pesquisa, cerca de 5% mais rápida. Junto com a Lazy eval: cerca de 13% mais rápido até à mesma profundidade. (default: on)

· PVS* (Principal Variation Search): para cada nó, o Supra começa por uma pesquisa com uma janela muito estreita (<1). Se o valor não sair dessa janela, a pesquisa com janela completa não é feita, e o Supra poupa muito tempo nesse nó. (default: on)

· Lmr* (Late Move Reductions): os primeiros filhos de cada nó (cerca de cinco) são pesquisados à profundidade completa e os seguintes a profundidade reduzida. Só há nova pesquisa completa quando a pesquisa reduzida provoca um corte. (default: on)

· Null move filter* : o lado a mover passa a vez e deixa o oponente jogar. Se o resultado dessa análise (com depth=depth-2) for ainda assim mau para o oponente, há corte total neste nó. (default: plus)

· Null move in pawn endings* : permite o null move nos finais só de peões. Por omissão está desligado, porque nesses finais o zugzwang é frequente e o null move pode enganar a pesquisa. (default: off)

· Vertical filter* : poderoso filtro de variantes claramente más a partir de depth=3. (default: on)

· Vertical margin* : margem de segurança do filtro vertical, nas unidades internas do Supra (10 = um peão). Quanto maior, menos variantes são cortadas. (default: 10)

· Vertical mate guard* : impede o filtro vertical de cortar variantes quando há valores de mate em jogo. (default: on)

· Turbo search* : quando ativo, o Supra usa um método de pesquisa um pouco mais rápido, com incrementos faseados de alfa. (default: on)

· Turbo exact* : variante exata do Turbo search, mais precisa mas mais lenta. (default: off)

· Search extension* : estende a pesquisa (depth+2) nas folhas onde houve capturas, xeques ou promoções, quando a pesquisa inicial é muito rápida. (default: on)

· Quiescence search** : nas folhas, o Supra continua a analisar só capturas e promoções até a posição acalmar, com "stand pat" (o lado que joga pode não capturar), ordenação MVV-LVA (vítima mais valiosa, atacante menos valioso) e avaliação só de material. Elimina muitos erros táticos. (default: on)

· Quiescence window** : no meio-jogo, a quiescência usa uma janela alfa-beta, o que a torna muito mais rápida. (default: on)

· Quiescence window min material** : abaixo deste material (sem os reis, com peão=10; o material inicial vale 800), a janela fecha-se e a quiescência passa a ser exata, para máxima precisão nos finais técnicos. O valor 0 deixa a janela sempre aberta. (Ideia do autor, implementada com a ajuda de Claude.) (default: 267, ou seja, 1/3 do material)

· Hash moves depth** : margem de profundidade para usar os lances guardados na tabela de hash. (default: 2)

· Positive float filter* : quatro opções: off (desativa por completo o efeito de filtragem); full (o Supra escolhe o nível máximo de filtragem em função da posição atual e do tempo disponível); auto (o Supra escolhe o nível de filtragem adequado em função da posição atual e do tempo disponível); manual (o utilizador fixa o nível de filtragem a partir de depth=5). (default: auto)

· Positive float filter level* : (só é válido se Positive float filter=manual) parametriza o nível de filtragem quando o Supra encontra uma resposta (em cada nó) de valor pelo menos igual a: (0-vazio); (1-peão); (2-bispo); (3-cavalo); (4-torre); (5-dama); (6-xeque-mate em 12 jogadas). (default: 5)

· Negative float filter* : as mesmas quatro opções (off, full, auto, manual), aplicadas às respostas do oponente; no modo manual, a partir de depth=4. (default: auto)

· Negative float filter level* : (só é válido se Negative float filter=manual) parametriza o nível de filtragem quando o Supra encontra uma resposta do oponente (em cada nó) de valor pelo menos igual a: (0-vazio); (1-peão); (2-bispo); (3-cavalo); (4-torre); (5-dama); (6-xeque-mate em 12 jogadas). (default: 5)


==================================================
AVALIAÇÃO E ESTILO
==================================================

· Extra evaluation* : além da diferença de material, a extra evaluation quantifica a posição das peças do Supra e do oponente. Para jogos de 1 minuto ou menos, recomendo esta opção desligada. (default: on)

· Extra definition* : o Supra valoriza não só a diferença de material mas também o quociente material, o que permite distinguir quocientes diferentes para a mesma diferença. Por exemplo, rei + 3 peões contra rei + 1 peão é mais forte do que rei + dama + 3 peões contra rei + dama + 1 peão. Assim, o Supra procura trocas quando está à frente e evita-as quando está atrás. Para jogos de 1 minuto ou menos, recomendo esta opção desligada. (default: on)

· Personality : escolhe um estilo de jogo, que ajusta de uma vez sete parâmetros (Aggressiveness, Attack to King proximity, Attack by check to King, Mobility, Positional relevance, Material quociente e o limite de sacrifício). Inspirado nas ideias de Alexander Shashin. (default: custom)
    - custom: mandam as opções individuais (é o modo de origem do Supra);
    - hyper-romantic: ataque total; aceita sacrificar até uma dama por uma vantagem tática ou posicional;
    - romantic: jogo ofensivo; aceita sacrificar até uma torre;
    - dynamic: o estilo clássico do Supra (os mesmos valores das opções por omissão);
    - positional: jogo sólido e posicional; dá muito valor ao material e à posição das peças.
  Com uma personalidade escolhida, as caixas individuais desses sete parâmetros são ignoradas. Para afinar à mão, escolhe "custom".

· Temperament : existem 3 estados de temperamento no Supra: dynamic (o mais agressivo), consistent e solid (o mais estratégico). As diferenças são atenuadas; o parâmetro Aggressiveness tem mais impacto real no estilo final de jogo. (default: dynamic)

· Aggressiveness : parametriza a tendência do Supra para escolher posições de ataque à dama, às torres, aos cavalos e aos bispos do oponente, e o peso do ataque ao rei na avaliação. (default: 1)

· Attack to King proximity : parametriza a tendência do Supra para escolher posições de ataque por proximidade ao rei do oponente. (default: 1)

· Attack by check to King : parametriza a tendência do Supra para escolher posições de ataque por xeque ao rei do oponente. (default: 1)

· Positional relevance : parametriza a relevância da posição das peças na fórmula de avaliação. (default: 5)

· Mobility : parametriza a relevância da mobilidade das peças na fórmula de avaliação. (default: 5)

· Material quociente : parametriza a relevância do quociente material na fórmula de avaliação e nos cortes da pesquisa. (default: 5)

· Castle value : define o valor dado ao roque. (default: 3)

· Mop-up** : nos finais contra o rei sozinho, o Supra empurra o rei adversário para a borda e aproxima o seu próprio rei. Com esta opção, o Supra dá mate com torre com facilidade. (default: on)

· Positional matrices : matrizes estáticas para orientar o Supra no início do jogo e matrizes dinâmicas para ajudar o Supra a dar mate no final. (default: on)


==================================================
INTERFACE
==================================================

· Full info : envia para a GUI todas as alternativas de jogada do Supra, mesmo as de valor muito baixo. (default: on)

· UCI_Chess960 : opção gerida automaticamente pela GUI nos jogos de Chess960. (default: off)


==================================================
OPÇÕES DE TESTE (multiprocessamento e tabela de hash)
==================================================

Estas opções servem para testes de desenvolvimento e não devem ser alteradas em uso normal:
Shared alpha (on), Split IID7 (on), Cycle barrier (on), Hash cutoffs (on), Quiescence frontier (on), Wait SCAN1 (on), Root aspiration (off), IID cycle factor (0).


*  Parâmetros que influenciam a velocidade da pesquisa.
** Implementado no Supra 30.0 com preciosa e imprescindível ajuda de Claude, inteligência artificial da Anthropic.


==================================================
CONFIGURAÇÕES RECOMENDADAS
==================================================

As opções que não aparecem nas tabelas ficam com os valores por omissão.

· T <= 1 min:
  CPU power level: medium
  Deep: 4
  Search extension: off
  Positive float filter: manual / level 2
  Negative float filter: manual / level 2
  Extra evaluation: off
  Extra definition: off
  Memory: off
  Deep memory: on

· 1 min < T <= 5 min:
  CPU power level: medium
  Deep: 9
  Search extension: off
  Positive float filter: manual / level 4
  Negative float filter: manual / level 4
  Memory: off
  Deep memory: on

· 5 min < T <= 15 min:
  CPU power level: high
  Deep: 9
  Search extension: off
  Positive float filter: auto
  Negative float filter: auto
  Memory: on
  Deep memory: on

· 15 min < T <= 240 min:
  CPU power level: high
  Deep: 9
  Search extension: on
  Positive float filter: auto
  Negative float filter: auto
  Memory: on
  Deep memory: on

· T > 240 min:
  CPU power level: high
  Deep: 9
  Search extension: on
  Positive float filter: off
  Negative float filter: off
  Memory: on
  Deep memory: on

Em todos os casos:
  Threads: 1 em jogos rápidos; em jogos de 10 minutos ou mais, o número de núcleos do computador (até 8)
  Hash: 64 MB ou mais (por exemplo 256 MB em jogos longos)
  Personality: custom (o mais forte) ou outra personalidade, conforme o estilo que preferires


==================================================
NOTAS
==================================================

O Supra é um motor UCI para instalar em GUIs como o Fritz, o ChessBase, o Arena, o Hiarcs, o Cute Chess, entre outras.

· O Supra é compatível com os livros de aberturas da GUI e com posições FEN. O Supra não consulta tablebases diretamente; a GUI pode usá-las para analisar ou dar o resultado dos jogos.
· Consegue jogar a partir de qualquer posição.
· Aceita torneios e matches entre motores.


Diverte-te com o SUPRA!

Pedro Mourão Soares Correia
